/**
 * Copyright (C) 2010 Cloudfarming <info@cloudfarming.nl>
 *
 * Licensed under the Eclipse Public License - v 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.eclipse.org/legal/epl-v10.html
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package nl.cloudfarming.client.sensor.greenseeker;

/**
 * File description enum for Greenseeker sensorfiles
 * This enum describes the columns in a greenseeker sensorfile
 *
 * @author Gerben Feenstra
 */
public enum GreenseekerFileDescriptionNormal {

    /**
     * Record ID
     */
    OBJECTID(0,1,true,java.lang.Double.class),

    /**
     * Part of GPS coordinate
     */
    LATITUDE(1,1,true,java.lang.Double.class),

    /**
     * Part of GPS coordinate
     */
    LONGITUDE(2,1,true,java.lang.Double.class),

    /**
     * Moving speed of vehicle
     */
    SPEED(3,1,true,java.lang.Double.class),

    /**
     * Direction/course
     */
    HEADING(4,1,true,java.lang.Double.class),

    /**
     * Change in height 
     * {@link http://www.cropquest.com/site/page/precisionag_elevation}
     */
    ELEVATION(5,1,true,java.lang.Double.class),

    /**
     * Normalized Difference Vegetation Index, calculated with values of red reflected light (VIS) and Near-infraredlight (NIR)
     * Formula = (VIS - NIR) / (VIS + NIR)
     * Measurement of fotosynthesis of a crop which can be an indication of nitrogen content, depending how large the crop is.
     * Between 0 and 1
     */
    NDVI(6,1,true,java.lang.Double.class),

    /**
     * {@link http://www.ntechindustries.com/lit/gs/DataSheet_Model_500_GS_Sensor.pdf}
     * {@link http://trl.trimble.com/docushare/dsweb/Get/Document-493092/}
     * Vegetation index
     * Default is IRVI (Inverse Ratio Vegetation Index
     * Can also be RVI, NDVI, SA-NDVI: (Soil Adjusted), WDR-NDVI
     */
    VI_2ND(7,1,true,java.lang.Double.class),

    /**
     * TODO: Javadoc
     */
    SENSOR_10(8,1,true,java.lang.Double.class),

    /**
     * TODO: Javadoc
     */
    SENSOR_23(9,1,true,java.lang.Double.class),

    /**
     * TODO: Javadoc
     */
    SENSOR_73(10,1,true,java.lang.Double.class),

    /**
     * TODO: Javadoc
     */
    SENSOR_19(11,1,true,java.lang.Double.class),

    /**
     * TODO: Javadoc
     */
    SENSOR_24(12,1,true,java.lang.Double.class),

    /**
     * TODO: Javadoc
     */
    SENSOR_26(13,1,true,java.lang.Double.class);

    private final int position;
    private final int mandatoryLength;
    private final boolean mandatory;
    private final static String delimiter = " ";
    private final Class theClass;

    private GreenseekerFileDescriptionNormal(int position, int mandatoryLength, boolean mandatory, Class theClass ){
            this.position = position;
            this.mandatory = mandatory;
            this.mandatoryLength = mandatoryLength;
            this.theClass = theClass;
    }

    public static String getDelimiter() {
            return delimiter;
    }

    public int getPosition() {
            return position;
    }

    public boolean isMandatory() {
            return mandatory;
    }

    public int getMandatoryLength() {
        return mandatoryLength;
    }

    public Class getTheClass() {
        return theClass;
    }
}
